//引入async模块
const async = require('async')
//引入静态常量模块
const Constant = require('../constant/constant.js')
const db = require('../db')

/**
 * 深度克隆方法
 * @date 2021-03-13
 * @param {any} obj
 * @returns {any}
 */
function clone(obj) {
  return JSON.parse(JSON.stringify(obj))
}

/**
 * 校验参数全局方法，检验params是否有checkArr中的所有参数
 * @date 2021-03-13
 * @param {any} params 请求的参数对象{a:'',b:'',c:''}
 * @param {any} checkArr 需要验证的参数 [a,b] p[a]
 * @param {any} cb 回调函数
 */
function checkParams(params, checkArr, cb) {
  let flag = true
  for (let i = 0; i < checkArr.length; i++) {
    if (!params[checkArr[i]]) {
      flag = false
      break
    }
  }
  if (flag) {
    cb(null)
  } else {
    cb(Constant.LACK)
  }
}

/**
 * 返回统一的方法，返回json数据
 * @date 2021-03-13
 * @param {any} tasks
 * @param {any} res
 * @param {any} resObj
 * @returns {any}
 */
function autoFn(tasks, res, resObj) {
  async.auto(tasks, async function (err) {
    if (err) {
      console.log(JSON.stringify(err))
      res.send({
        code: err.code || Constant.DEFAULT_ERROR.code,
        msg: err.msg || JSON.stringify(err),
      })
    } else {
      console.log(resObj)
      res.send(resObj)
    }
  })
}

module.exports = {
  autoFn,
  clone,
  checkParams,
}
